<!doctype html>  
<html lang="cn">  
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
	<title>没什么,就只是测试孙潇彤的智商</title>
</head>
<body>  
    <canvas id="can" width="400" height="400" style="background: Black"></canvas>  
    <script>
		//sn数组
        var sn = [ 42, 41 ], dz = 43, fx = 1, n, ctx = document.getElementById("can").getContext("2d"); 
		//draw是画蛇,c是颜色
        function draw(t, c) {
            ctx.fillStyle = c;  
            ctx.fillRect(t % 20 * 20 + 1, ~~(t / 20) * 20 + 1, 18, 18);  
        }  
        document.onkeydown = function(e) {  
            fx = sn[1] - sn[0] == (n = [ -1, -20, 1, 20 ][(e || event).keyCode - 37] || fx) ? fx : n  
        };  
        !function() {console.log("现在的fx是:"+ fx );
		//unshift()方法将把它的参数插入数组的头部，并将已经存在的元素顺次地移到较高的下标处，以便留出空间。该方法的第一
		//个参数将成为数组的新元素0，如果还有第二个参数，它将成为新的元素 1，以此类推。请注意，unshift() //方法不创建新的创建，而是直接修改原有的数组。
            sn.unshift(n = sn[0] + fx);  
			//indexOf 方法返回字符串的值在字符串中首次出现的位置
			//如果从n开始的字符串里面有1或者n的值大于游戏画面
            if (sn.indexOf(n, 1) > 0 || n<0||n>399 || (fx == 1 && n % 20 == 0) || (fx == -1 && n % 20 == 19)){
				alert("菜鸡孙大彤");			
                return location.replace(location.href);  }
            draw(n, "Red");  
            if (n == dz) {  
                while (sn.indexOf(dz = ~~(Math.random() * 400)) >= 0);  
                draw(dz, "Yellow");  
            } else  
                draw(sn.pop(), "Black");  
				//设置贪吃蛇的速度
                setTimeout(arguments.callee, 150);  
        }();  
    </script>  
</body>  
</html> 